A switch is a device that provides a switching function (i.e., determines a physical path) in a data communications network. Switching may often involve transferring information, such as digital data packets or frames, among entities of the network. Switching is accomplished by examining data on one or more of the network layers. One such type of switching is media access control (MAC) address-based switching, which involves switching in the data link layer. The data link layer is also commonly referred to as layer 2 of the OSI Reference Model. Specifically, switching may occur through Ethernet and/or Gigabit Ethernet on full duplex ports for layer 2 networks.
During switching, there is often a need for flow control of packets, in case of network outages or if a network device does not have enough resources to handle the received traffic. In a full duplex network, a receiver can signal to the transmitter to stop sending the traffic if it does not have enough resources to handle the traffic. The IEEE 802.3x Specification (now part of 802.3, Annex 31B), uses PAUSE frames for a device to signal another device. The specialized MAC control PAUSE frames according to IEEE 802.3x are depicted in FIG. 1. Each frame 100 comprises a destination address 102 (6 bytes), a source address 104 (6 bytes), a type/length field 106 (2 bytes), an opcode 108 (2 bytes), a pause time field (2 bytes) 110 and 42 bytes of reserved empty space 112. When a frame is transmitted, it is preceded by a 7 byte preamble and 1 byte Start-Frame-Delimiter, and then followed by a 4 byte frame check sequence.
The PAUSE frame causes any device receiving it to stop forwarding traffic to the requested device for the specified period of time. The hope is that when that period of time is up, the device has resources available for the traffic.
This flow control mechanism, however, does not discriminate among the incoming frames—it applies to all incoming frames to a device. In certain systems, however, frames may be prioritized. For example, voice data may have a high priority level as it is extremely time sensitive, whereas text data may have a low priority level. Furthermore, certain subscriber's traffic may be afforded higher priority than others. The prior art flow control mechanism, however, violates these priorities by simply ceasing all incoming transmissions. This can even defeat the purpose of flow control in the first place, by deteriorating network throughput, causing more transmissions, and a compounding of the problem.
What is needed is a mechanism wherein the MAC can take the action of the flow control and apply it in a way that takes into account the priority of the frames.
Furthermore, currently PAUSE frames are sent out as untagged and only have significance on a single link. FIG. 2 is a diagram illustrating a typical system utilizing PAUSE frames. Here, the device that transmits the PAUSE frame 200 wishes to cause another device 202 to hold off on transmitting frames for a time. The other device 202 processes the PAUSE frame it receives but does nothing further with the frame itself.
However, in the metro Ethernet environment, clients and servers may not be directly connected, but rather connected over several hops. FIG. 3 is a diagram illustrating a typical metro Ethernet environment. The transmitting device 300 in a first VLAN is separated from the receiving device 302, also in the first VLAN, by several hops 304-314, which are typically switches or hubs. Currently, the point-to-point nature of the PAUSE mechanism prevents the receiving device 302 from receiving the PAUSE frame, because the first hop 304 processes the frame without forwarding it. What is needed is a mechanism to extend the PAUSE frame solution to Virtual Local Area Networks (VLANs) across multiple hops. What is also needed is a mechanism that would allow the traffic flow in a specific VLAN to be paused, without pausing traffic flow in other VLANs.